#ifndef _WORLD_H_
#define _WORLD_H_

#include "render.h"
#include "dynamic.h"
#include "terrain.h"
#include "physics.h"
#include "world_terrain.h"

#include <iostream>

namespace WtfEngine
{
	/**
	 * Actor interface - describes game objects which are 'intelligent' and
	 * invoke actions on other objects.
	 **/
	class IActor: public virtual IDynamic, public virtual IGameObject {
		GC_INTERFACE(IActor);

		public:
			class Action {
				virtual ~Action() {};
			};

			virtual tVector getPosition() const = 0;
			virtual Orientation3D getOrientation() const = 0;
	};

	/**
	 * The 'world' base class - holds properties about the current simulation,
	 * e.g. terrain info (used by AI pathfinding).
	 **/
	class World: public GameObject {
		ITerrain::tRef						mrTerrain;
		WtfGraphics::GraphicsData::tRef		mrSkyBox;

	public:
		World();

		void LoadTerrainHeightMap(const String& sPath);
	};
};

#endif /* _WORLD_H_ */

